﻿using System.Collections.Generic;

using Common.Base;

using CommunicationLibrary.TransportData;

using GameNetwork.Network;

namespace GameNetwork.Interfaces
{
    public interface IGameNetwork
    {
        event GameLostEventHandler OnGameLost;

        event GameWonEventHandler OnGameWon;

        event GameLostByOtherPlayerEventHandler OnGameLostByOtherPlayer;

        event ConnectionErrorEventHandler OnConnectionError;

        Player Player { get; }

        IEnumerable<Player> Opponents { get; }


        GameState GetGameState();

        Result NewRoute(RouteTypeEnum routeType, Position start, Position end);

        Result RemoveRoute(RouteTypeEnum routeType, Position start, Position end);

        void QuitGame();

        Result BuildGoldMine(Position pos);

        Result BuildBarrack(Position position);
    }
}